#ifndef PANELJUEGO_H_
#define PANELJUEGO_H_

#include <gtkmm.h>
#include <string>
#include <map>

#include "PanelFondo.h"
#include "VistaEscenario.h"
#include "Usuario.h"

class Juego;

class PanelJuego: public PanelFondo {
    class ModelColumns : public Gtk::TreeModel::ColumnRecord {
      public:
        ModelColumns() {
            add(usuario);
            add(puntaje);
        }

        Gtk::TreeModelColumn<Glib::ustring> usuario;
        Gtk::TreeModelColumn<int> puntaje;
    };

    Gtk::Fixed fidex_panelInfoNivel;
    Gtk::VBox HBoxPanel;
    Gtk::Label label_puntuacion, label_nivel, label_usuario, label_score;
    Gtk::Entry entry_puntuacion, entry_nivel, entry_usuario;
    Gtk::Button botonVolver, botonMute;

    Gtk::ScrolledWindow scrollScore;

    ModelColumns m_Columns;

    Gtk::TreeView m_TreeView;
    Glib::RefPtr<Gtk::ListStore> m_refTreeModel;

    void inicializarPanelScore();
    void limpiarPanelJugadores();

  public:
    explicit PanelJuego(int, int);
    virtual ~PanelJuego();

    void agregarFicha(VistaFichaTablero *vista);

    //cuando recibo los usuario de la partida lo inserto en la pantalla
    void agregarPanelScoreJug(std::map<std::string, Usuario *>);

    void actualizarPuntaje(std::map<std::string, Usuario *> jug);

    void establecerDatosNivel(std::string, std::string, std::string, int, int);
    void setImagenFondoTablero(std::string);
    void vaciarPartidas();

    VistaEscenario *dibujador;

    friend class Juego;
};

#endif /* PANELJUEGO_H_ */
